package com.qining618.cms.ucenter.service;

import com.qining618.cms.ucenter.domain.User;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.Date;

/**
 * <p>
 * 用户 服务类
 * </p>
 *
 * @author qining
 * @date 2019-09-16
 */
public interface UserService extends IService<User> {

    /**
     * 根据微信小程序手机号获取用户信息(不存在则新增)
     * @param code 凭证
     * @param encryptedData 加密数据
     * @param iv 加密向量
     * @param ip 客户端ip
     * @return User
     */
    User getByWechatMiniPhone(String code, String encryptedData, String iv, String ip);

    /**
     * 根据微信小程序code获取用户信息(不存在则新增)
     * @param code 获取凭证code
     * @param ip 客户端ip
     * @return User
     */
    User getByWechatMiniCode(String code, String ip);

    /**
     * 绑定微信小程序手机号
     * @param userId 用户id
     * @param code 凭证
     * @param encryptedData 加密数据
     * @param iv 加密向量
     * @return User
     */
    String bindWechatMiniPhone(Long userId, String code, String encryptedData, String iv);

    /**
     * 登录成功更新
     * @param userId 用户id
     * @param ip 客户端ip
     */
    void updateLoginSuccess(Long userId, String ip);

    /**
     * 重置密码
     * @param id 主键
     * @param password 密码
     */
    void resetPassword(Long id, String password);

    /**
     * 冻结
     * @param userId 用户id
     * @param dueTime 到期时间
     * @param reason 冻结原因
     */
    void freeze(Long userId, Date dueTime, String reason);

    /**
     * 解冻
     * @param userId 用户id
     */
    void unFreeze(Long userId);

    /**
     * 累计用户近日评论数
     * @param userId 用户id
     */
    void incTodayCommentTotal(Long userId);

}
